@file:Suppress("unused")

package com.hjh.tool.extension

import android.view.View
import kotlin.collections.forEach
import kotlin.collections.indexOfFirst
import kotlin.collections.joinToString
import kotlin.collections.plus
import kotlin.collections.take

/**
 * @author： hjh
 * @createDate： 2024/12/26 13:52
 * @description：
 * @qq： 3472903821
 * @version: 1.0
 */

/**
 * 如果有满足条件的元素就替换，没有则添加至末尾
 */
fun <T> MutableList<T>?.addOrUpdate(element: T, match: (T) -> Boolean): MutableList<T> {
    if (this == null) {
        return mutableListOf(element)
    }
    val index = indexOfFirst(match)
    if (index != -1) {
        this[index] = element // 更新
    } else {
        add(element) // 添加
    }
    return this
}

fun <T> List<T>.info(): String {
    return joinToString(separator = "; ", prefix = "[", postfix = "]")
}

fun <T> List<T>.ensureListElements(need: Int, defaultElement: T): List<T> {
    // 计算缺少的元素个数
    val missingCount = need - size

    // 如果已经有 need 个或更多元素，直接返回前 need 个
    if (missingCount <= 0) {
        return take(need)
    }

    // 如果不足 need 个，用 defaultElement 补足
    return this + List(missingCount) { defaultElement }
}

fun List<View>.enable(isEnable: Boolean) {
    forEach {
        it.isEnabled = isEnable
    }
}
